function goodGetName(target: any, key: string, descriptor: PropertyDescriptor) {
  let o = descriptor.value;
  descriptor.value = function () {
    return o.apply(this, arguments) + "    1111";
  };
  return descriptor;
}

class Person {
  constructor(public name: string) {
    this.name = "hello";
  }

  @goodGetName
  getName() {
    return this.name;
  }
}

let p = new Person("aaaaaaaa");
console.log(p.getName());
